<?php

App::uses('AppController', 'Controller');

/**
 * Recetaspacientes Controller
 *
 * @property Recetaspaciente $Recetaspaciente
 */
class ReportesController extends AppController {

    public $layout = 'hospital';
    public $uses = array('Paciente', 'Consultasexterna');
    public $components = array('Utilidades','Fechas');

    public function beforeFilter() {
        parent::beforeFilter();
        //$this->Auth->allow();
    }

    public function index() {

        $cantidadMujeres = $this->Paciente->find('count', array(
            'conditions' => array('Paciente.sexo' => 'F')
        ));
        //debug($cantidadMujeres);

        $cantidadVarones = $this->Paciente->find('count', array(
            'conditions' => array('Paciente.sexo' => 'M')
        ));
        //debug($cantidadMujeres);
        $sqlPorProvincia = "SELECT COUNT(p.id), pr.nombre, pr.id FROM pacientes p LEFT JOIN provincias pr ON (p.provincia_id_p=pr.id) WHERE p.provincia_id_p IS NOT NULL GROUP BY p.provincia_id_p";
        $sqlPorCiudad = "SELECT COUNT(p.id), pr.nombre, pr.id FROM pacientes p LEFT JOIN provincias pr ON (p.provincia_id=pr.id) WHERE p.provincia_id IS NOT NULL GROUP BY p.provincia_id";
        //debug($porLugar);
        $cantidadProvincia = $this->Paciente->find('count', array(
            'conditions' => array('Paciente.lugar' => 'provincia')
        ));
        $cantidadCiudad = $this->Paciente->find('count', array(
            'conditions' => array('Paciente.lugar' => 'ciudad')
        ));

        $tipoAtencion = $this->Consultasexterna->find('all', array(
            'recursive' => 0,
            'fields' => array('COUNT(Consultasexterna.id) as cantidad, Trauma.nombre'),
            'group' => 'Consultasexterna.trauma_id'
        ));

        /*
         * 1 a 13...niñez
          13 a 18......adolecencia
          18 a 30 ... adulto joven
          30..60........adulto mayor
          60...........3 edad
         */
        /*$cantidadNinos = $this->Consultasexterna->find('count', array(
            'recursive' => -1,
            'conditions' => array('Consultasexterna.edad BETWEEN ? AND ?' => array(1, 13))
        ));

        $cantidadAdolecentes = $this->Consultasexterna->find('count', array(
            'recursive' => -1,
            'conditions' => array('Consultasexterna.edad BETWEEN ? AND ?' => array(14, 18))
        ));

        $cantidadAJovenes = $this->Consultasexterna->find('count', array(
            'recursive' => -1,
            'conditions' => array('Consultasexterna.edad BETWEEN ? AND ?' => array(19, 30))
        ));

        $cantidadAMayor = $this->Consultasexterna->find('count', array(
            'recursive' => -1,
            'conditions' => array('Consultasexterna.edad BETWEEN ? AND ?' => array(31, 60))
        ));

        $cantidadTedad = $this->Consultasexterna->find('count', array(
            'recursive' => -1,
            'conditions' => array('Consultasexterna.edad BETWEEN ? AND ?' => array(61, 100))
        ));*/
        $pacientes = $this->Paciente->find('all',array('recursive' => -1));
        $cantidadNinos = $cantidadAdolecentes = $cantidadAJovenes = $cantidadAMayor = $cantidadTedad = 0;
        foreach ($pacientes as $p)
        {
            $edad = $this->Fechas->calculaEdad($p['Paciente']['fecha_nacimiento']);
            if ($edad >= 1 and $edad <= 13)
            {
                $cantidadNinos++;
            }
            if ($edad >= 14 and $edad <= 18)
            {
                $cantidadAdolecentes++;
            }
            if ($edad >= 19 and $edad <= 30)
            {
                $cantidadAJovenes++;
            }
            if ($edad >= 31 and $edad <= 60)
            {
                $cantidadAMayor++;
            }
            if ($edad >= 61 and $edad <= 100)
            {
                $cantidadTedad++;
            }
        }

        $ano = date('Y');
        $fechaEnero = "15-01-$ano";

        //debug($ano);
        $enero = $this->Utilidades->ultimoDiaMes('15-06-2008');
        //debug($enero);
        //debug($tipoAtencion);
        //debug($cantidadCiudad);
        //debug($sqlPorCiudad);
        //debug($sqlPorProvincia);
        $this->set(compact(
                        'cantidadMujeres', 'cantidadVarones', 'cantidadProvincia', 'cantidadCiudad', 'tipoAtencion', 'cantidadNinos', 'cantidadAdolecentes', 'cantidadAJovenes', 'cantidadAMayor', 'cantidadTedad'
        ));
    }

    public function ajaxmujeresvarones() {
        $this->layout = 'ajax';
        $fechaInicio = $this->request->data['Reporte']['fechaInicio'];
        $fechaFin = $this->request->data['Reporte']['fechaFin'];
        //debug($this->request->data);die;
        //$cantidadMujeres = $this->Consultasexterna->find('count');
        $sqlFemenino = "SELECT COUNT(DISTINCT p.id) as total
                FROM consultasexternas ce
                LEFT JOIN pacientes p ON (ce.paciente_id=p.id)
                WHERE p.sexo='F' AND								
                ce.fecha BETWEEN '$fechaInicio 00:00:00' AND '$fechaFin 23:59:59'";
        $sqlMasculino = "SELECT COUNT(DISTINCT p.id) as total
                FROM consultasexternas ce
                LEFT JOIN pacientes p ON (ce.paciente_id=p.id)
                WHERE p.sexo='M' AND								
                ce.fecha BETWEEN '$fechaInicio 00:00:00' AND '$fechaFin 23:59:59'";
        //debug($sql);
        
        
        $cantidadMujeres2 = $this->Consultasexterna->find('count', array(
        'fields' => 'DISTINCT Consultasexterna.paciente_id',
            'contain' => array('Paciente'),
            'conditions' => array(
                'Paciente.sexo' => 'F',
                'Consultasexterna.fecha >=' => $fechaInicio,
                'Consultasexterna.fecha <=' => $fechaFin
            )
        ));
        $cantidadVarones2 = $this->Consultasexterna->find('count', array(
        'fields' => 'DISTINCT Consultasexterna.paciente_id',
            'contain' => array('Paciente'),
            'conditions' => array(
                'Paciente.sexo' => 'M',
                'Consultasexterna.fecha >=' => $fechaInicio,
                'Consultasexterna.fecha <=' => $fechaFin
            )
        ));
        $cantidadMujeres = $this->Consultasexterna->query($sqlFemenino);
        $cantidadVarones = $this->Consultasexterna->query($sqlMasculino);
        $this->set(compact('cantidadVarones2', 'cantidadMujeres2'));
        /*debug($cantidadMujeres2);
        debug($cantidadVarones2);
        debug($cantidadMujeres);
        debug($cantidadVarones);*/
    }
    public function ajaxreporte()
    {
        $this->layout = 'ajax';
        $fechaInicio = $this->request->data['Reporte']['fechaInicio'];
        $fechaFin = $this->request->data['Reporte']['fechaFin'];
        
        
        
        $cantidadProvincia = $this->Consultasexterna->find('count', array(
        'fields' => 'DISTINCT Consultasexterna.paciente_id',
            'contain' => array('Paciente'),
            'conditions' => array(
                'Paciente.lugar' => 'provincia',
                'Consultasexterna.fecha >=' => $fechaInicio,
                'Consultasexterna.fecha <=' => $fechaFin
            )
        ));
        $cantidadCiudad = $this->Consultasexterna->find('count', array(
        'fields' => 'DISTINCT Consultasexterna.paciente_id',
            'contain' => array('Paciente'),
            'conditions' => array(
                'Paciente.lugar' => 'ciudad',
                'Consultasexterna.fecha >=' => $fechaInicio,
                'Consultasexterna.fecha <=' => $fechaFin
            )
        ));
        /*debug($cantidadCiudad);
        debug($cantidadProvincia);*/
        $this->set(compact('cantidadProvincia', 'cantidadCiudad'));
    }
    public function ajaxtipoatencion()
    {
        $this->layout = 'ajax';
        $fechaInicio = $this->request->data['Reporte']['fechaInicio'];
        $fechaFin = $this->request->data['Reporte']['fechaFin'];
        
        $tipoAtencion = $this->Consultasexterna->find('all', array(
            'recursive' => 0,
            'fields' => array('COUNT(Consultasexterna.id) as cantidad, Trauma.nombre'),
            'conditions' => array(
                'Consultasexterna.fecha >=' => $fechaInicio,
                'Consultasexterna.fecha <=' => $fechaFin
            ),
            'group' => 'Consultasexterna.trauma_id'
        ));
        //debug($tipoAtencion);
        $this->set(compact('tipoAtencion'));
    }
    public function ajaxedad()
    {
        $this->layout = 'ajax';
        $fechaInicio = $this->request->data['Reporte']['fechaInicio'];
        $fechaFin = $this->request->data['Reporte']['fechaFin'];
        
        $cantidadNinos = $this->Consultasexterna->find('count', array(
            'recursive' => -1,
            'fields' => 'DISTINCT Consultasexterna.paciente_id',
            'conditions' => array('Consultasexterna.edad BETWEEN ? AND ?' => array(1, 13),
            'Consultasexterna.fecha >=' => $fechaInicio,
            'Consultasexterna.fecha <=' => $fechaFin
            )
        ));

        $cantidadAdolecentes = $this->Consultasexterna->find('count', array(
            'recursive' => -1,
            'fields' => 'DISTINCT Consultasexterna.paciente_id',
            'conditions' => array('Consultasexterna.edad BETWEEN ? AND ?' => array(14, 18),
            'Consultasexterna.fecha >=' => $fechaInicio,
                'Consultasexterna.fecha <=' => $fechaFin)
        ));

        $cantidadAJovenes = $this->Consultasexterna->find('count', array(
            'recursive' => -1,
            'fields' => 'DISTINCT Consultasexterna.paciente_id',
            'conditions' => array('Consultasexterna.edad BETWEEN ? AND ?' => array(19, 30),
            'Consultasexterna.fecha >=' => $fechaInicio,
                'Consultasexterna.fecha <=' => $fechaFin)
        ));

        $cantidadAMayor = $this->Consultasexterna->find('count', array(
            'recursive' => -1,
            'fields' => 'DISTINCT Consultasexterna.paciente_id',
            'conditions' => array('Consultasexterna.edad BETWEEN ? AND ?' => array(31, 60),
            'Consultasexterna.fecha >=' => $fechaInicio,
                'Consultasexterna.fecha <=' => $fechaFin)
        ));

        $cantidadTedad = $this->Consultasexterna->find('count', array(
            'recursive' => -1,
            'fields' => 'DISTINCT Consultasexterna.paciente_id',
            'conditions' => array('Consultasexterna.edad BETWEEN ? AND ?' => array(61, 100),
            'Consultasexterna.fecha >=' => $fechaInicio,
                'Consultasexterna.fecha <=' => $fechaFin)
        ));
        //debug($cantidadNinos);
        $this->set(compact('cantidadNinos','cantidadAdolecentes','cantidadAJovenes','cantidadAMayor','cantidadTedad'));
    }

    public function fechas() {
        
    }

}